﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using docTissV2.Classes;
using docTissV2.Classes.TreeNodeContents;
using docTissV2.Enumeradores;
using System.IO;

namespace docTissV2
{
    public partial class uc_NumeroGuia : UserControl
    {
        public delegate void numeroGuiaChangedHandler(object sender);
        public event numeroGuiaChangedHandler numeroGuiaChanged;

        #region Properties

        public ConteudoNoGuia conteudoNoGuia = null;

        #endregion

        #region Construtor
        public uc_NumeroGuia(ConteudoNoGuia conteudo)
        {
            InitializeComponent();
            conteudoNoGuia = conteudo;
        }
        #endregion

        #region Eventos

        private void btnOK_Click(object sender, EventArgs e)
        {
            conteudoNoGuia.NumeroGuia = txtBoxNumeroGuia.Text;
            conteudoNoGuia.NumeroGuia = conteudoNoGuia.NumeroGuia.PadLeft(20, '0');
            if (conteudoNoGuia.TipoNo.Equals(TipoNo.GuiaFaturamento))
            {
                if (VerificaNumeroGuiaFaturamentoValido())
                {
                    numeroGuiaChanged(this);
                    Globals.ThisAddIn.CustomTaskPanes.Remove(Globals.ThisAddIn.NumeroGuiaCTP);
                }
                else
                {
                    MessageBox.Show("Este número de guia já existe!", "Atenção!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                }
            }
            else if (conteudoNoGuia.TipoNo.Equals(TipoNo.GuiaSolicitacao))
            {
                if (VerificaNumeroGuiaSolicitacaoValido())
                {
                    numeroGuiaChanged(this);
                    Globals.ThisAddIn.CustomTaskPanes.Remove(Globals.ThisAddIn.NumeroGuiaCTP);
                }
                else
                {
                    MessageBox.Show("Este número de guia já existe!", "Atenção!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                }
            }
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            Globals.ThisAddIn.CustomTaskPanes.Remove(Globals.ThisAddIn.NumeroGuiaCTP);

            try
            {
                string pathGuia = Globals.ThisAddIn.Application.ActiveDocument.FullName;

                object doNotSaveChanges = Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges;
                object mis = Globals.ThisAddIn._missing;
                
                Globals.ThisAddIn.Application.ActiveDocument.Close(ref doNotSaveChanges, ref mis, ref mis);
                File.Delete(pathGuia);
            }
            catch (Exception)
            {

                throw;
            }
        }

        private void uc_NumeroGuia_Load(object sender, EventArgs e)
        {
            txtBoxNumeroGuia.Focus();
        }

        private void txtBoxNumeroGuia_KeyPress(object sender, KeyPressEventArgs e)
        {
            if ((e.KeyChar.CompareTo((char)Keys.Return)) == 0)
            {
                e.Handled = true;
                btnOK_Click(this, e);
            }
        }
        #endregion

        #region Métodos

        private bool VerificaNumeroGuiaFaturamentoValido()
        {
            //TODO: Verificar se não existe numero de guia
            return true;
        }

        private bool VerificaNumeroGuiaSolicitacaoValido()
        {
            //TODO: Verificar se não existe numero de guia
            return true;
        }

        #endregion
    }
}
